package br.com.hs.nfe.common.enumeration;

/**
 * Enumeração dos processo de emissão da NF-e.
 * @author Ranlive Hrysyk
 */
public enum ProcessoEmissaoEnum {

    /**
     * Emissão de NF-e com aplicativo do contribuinte.
     */
    NFE_APLICATIVO_CONTRIBUINTE("0", "NF-e com aplicativo do contribuinte"),
    /**
     * Emissão de NF-e avulsa pelo Fisco.
     */
    NFE_AVULSA_FISCO("1", "NF-e avulsa pelo Fisco"),
    /**
     * Emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco.
     */
    NFE_AVULSA_SITE_FISCO("2", "NF-e avulsa pelo site do Fisco"),
    /**
     * Emissão de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco.
     */
    NFE_APLICATIVO_FISCO("3", "NF-e com aplicativo do Fisco");
    private String codigo;
    private String descricao;

    private ProcessoEmissaoEnum(String codigo, String descricao) {
        this.codigo = codigo;
        this.descricao = descricao;
    }

    /**
     * Obtém o código do processo de emissão.
     */
    public String getCodigo() {
        return codigo;
    }

    /**
     * Descrição do processo de emissão.
     */
    public String getDescricao() {
        return descricao;
    }

    @Override
    public String toString() {
        return getDescricao();
    }

    /**
     * Obtém enum pelo código.
     */
    public static ProcessoEmissaoEnum getEnumByCodigo(String codigo) {
        for (ProcessoEmissaoEnum e : values()) {
            if (e.getCodigo().equals(codigo)) {
                return e;
            }
        }
        return null;
    }
}
